To improve the efficiency of multimedia applications, as well as other applications with similar characteristics, Single Instruction, Multiple Data (SIMD) architectures have been implemented in microprocessor systems to enable one instruction to operate on several operands in parallel. In particular, SIMD architectures take advantage of packing many data elements within one register or contiguous memory location. With parallel hardware execution, multiple operations are performed on separate data elements by one instruction, typically resulting in significant performance advantages.
Applications that can benefit from SIMD architectures include, for example, graphics, video, and image processing algorithms, and digital signal processing algorithms. These applications typically employ logical and/or mathematical operations on large data sets that can be scaled to SIMD widths to take advantage of the parallelism achieved through SIMD architectures. For example, image processing and graphics algorithms scale in terms of resolution (pixels per unit area) and pixel encoding (bits per pixel to represent intensity and color). Similarly, digitized samples taken from sensors and instrumentation in digital signal processing applications have scalable resolutions and data acquisition rates.